home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / programer2 / euclidlib / h / cache < prev    next >
Text File  |  1992-04-16  |  2KB  |  58 lines

  1. /**** cache.h ****/
  2. /* Routines that allow multitasking pictures to use a single cache.
  3.  * By Paul Field
  4.  * See !ReadMe file for distribution/modification restrictions
  5.  *
  6.  * For the purposes of these routines you can treat a euclid structure as a cache
  7.  *  - useful when you want several multitasking pictures of one structure that
  8.  *    does not use a drawing cache
  9.  *
  10.  * 'Cache' may well be replaced with a more general 'process' module in a later
  11.  * version of the library.
  12.  */
  13.  
  14. #ifndef __cache_h
  15. #define __cache_h
  16.  
  17. #include "bool.h"
  18. #include "euclid.h"
  19.  
  20. typedef void (*cache_processstart) (void *cache, void *handle);
  21.  
  22. BOOL cache_callwhenfree(void *cache, cache_processstart, void *handle);
  23.  /* Registers a routine to be called when 'cache' is no longer being used.
  24.   * This routine should start a process which is always terminated with a 
  25.   * call to 'cache_finished'.
  26.   * Routines are called on a first come, first served basis.
  27.   * Returns FALSE if the routine could not be registered.
  28.   * N.B. The function that you pass will be called immediately if the cache is
  29.   *      free, so make sure you set up any flags or data it might need BEFORE
  30.   *      you make this call.
  31.   */
  32.  
  33. void cache_finished(void *cache);
  34.  /* This routine should be called when the cache is no longer needed and can be
  35.   * used by a new process.
  36.   */
  37.  
  38. void cache_removeprocess(void *cache, cache_processstart, void *handle);
  39.  /* Removes any pending calls to a process that is started by 'cache_processstart'
  40.   * with 'handle'. (If there is more than one call pending then they will all be removed)
  41.   * N.B. This does not affect the currently running process.
  42.   */
  43.  
  44. void cache_removeallprocesses(void *cache, void *handle);
  45.  /* Removes all pending calls to processes that use 'handle' from the cache's pending
  46.   * call list.
  47.   */
  48.  
  49. BOOL cache_inuse(void *cache);
  50.  /* Returns TRUE if the cache is being used at the current time.
  51.   */
  52.  
  53. void *cache_address(euclid_header *structure);
  54.  /* Returns the value of the structure's cache (equals structure if it has no explicit
  55.   * drawing cache).
  56.   */
  57. #endif
  58.